/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.gbvbahia.projeto.beans.facade.interfaces;

import br.com.gbvbahia.projeto.beans.facade.commons.InterfaceEntityBeans;
import br.com.gbvbahia.projeto.entidades.Usuario;
import br.com.gbvbahia.projeto.exceptions.EntityException;
import java.util.List;

/**
 *
 * @author Usuário do Windows
 */
public interface UsuarioFacade extends InterfaceEntityBeans<Usuario, String> {

    /**
     * Realiza paginacao com filtro por nome/login, se nome/login forem nulos
     * ou vazio "" deve fazer a paginação completa.
     *
     * @param login java.lang.String será buscado logins que contenham
     * conteúdo parecido: %login%
     * @param nome java.lang.String será buscado nomes que contenham conteúdo
     * parecido: %nome%
     * @param range [0] Ponto de partida, [1] Ponto de parada. [0] = 5 e [1] =
     * 10, irá trazer os dados da 5ª linha até a 10ª.
     * @return List de orgaos dentro do perfil.
     */
    List<Usuario> buscarUsuarioPorNomeLogin(String nome,
            String login, int[] range);

    /**
     * Contabiliza o total de Usuarios por nome/login ou contabiliza todos se
     * nome/login for nulo.
     *
     * @param login java.lang.String será buscado logins que contenham
     * conteúdo parecido: %login%
     * @param nome java.lang.String será buscado nomes que contenham conteúdo
     * parecido: %nome%
     * @return O total de Usuarios com o nome/login passado, ou todos se nulo
     * ou vazio for informado.
     */
    Integer contarPorNome(String nome, String login);

    /**
     * Alterar senha do usuário.<br>
     * A senha será encriptografada dentro do método.
     * @param usuario Usuário que terá a senha alterada.
     * @param novaSenha Nova senha, sem criptografia.
     * @throws EntityException Utiliza Update de AbstractEntityBeans
     * que lança EntityException se houver problemas de validação.
     */
    void alterarSenha(Usuario usuario, String novaSenha)
            throws EntityException;
}
